package com.sywl.ytcx.service;

import com.sywl.ytcx.entity.res.ResponseResult;

import java.time.LocalDate;
import java.time.YearMonth;

/**
 * 社区活跃度服务接口
 * 提供用户活跃度统计和新增注册统计相关功能
 */
public interface CommunityActivityService {

    /**
     * 记录用户登录行为
     * @param account 用户账户唯一标识
     * @return ResponseResult 统一响应结果
     */
    ResponseResult recordLogin(String account);

    /**
     * 获取指定日期的日活跃用户数(DAU)
     * @param date 查询日期
     * @return ResponseResult 包含当日活跃用户数
     */
    ResponseResult getDAU(LocalDate date);

    /**
     * 获取指定日期范围内的周活跃用户数(WAU)
     * @param startOfWeek 周开始日期
     * @param endOfWeek 周结束日期
     * @return ResponseResult 包含周活跃用户数
     */
    ResponseResult getWAU(LocalDate startOfWeek, LocalDate endOfWeek);

    /**
     * 获取指定年月的月活跃用户数(MAU)
     * @param month 年月对象
     * @return ResponseResult 包含月活跃用户数
     */
    ResponseResult getMAU(YearMonth month);

    /**
     * 统计指定日期的新注册用户数
     * @param date 查询日期
     * @return ResponseResult 包含当日新增注册用户数
     */
    ResponseResult countNewRegistrations(LocalDate date);

    /**
     * 统计指定日期范围内的新注册用户数
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return ResponseResult 包含新增注册用户总数
     */
    ResponseResult countNewRegistrationsBetween(LocalDate startDate, LocalDate endDate);
}